package pe.gob.osinergmin.interfase_siaf.dac.ingreso.service.impl;

import java.util.List;

import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import pe.gob.osinergmin.interfase_siaf.dac.bean.IntfCabConsultaBean;
import pe.gob.osinergmin.interfase_siaf.dac.common.dao.IntfCabDao;
import pe.gob.osinergmin.interfase_siaf.dac.domain.interfase.IntfCab;
import pe.gob.osinergmin.interfase_siaf.dac.ingreso.service.ConsultarIntCabService;
import pe.gob.osinergmin.interfase_siaf.dac.util.Constantes;

@Service("consultarIntCabService")
public class ConsultarIntCabServiceImpl implements ConsultarIntCabService {
	
	private final Log logger = LogFactory.getLog(getClass());	
	
	@Autowired
	private IntfCabDao intfCabDao;
	
	
	@Override
	public IntfCabConsultaBean consultarIntfCabXSecuencial(String secuencial) throws Exception {	
		IntfCabConsultaBean bean = new IntfCabConsultaBean();
		IntfCab cab  = null;
		try {
			cab = new IntfCab();			
			cab.setSecuencial(secuencial); 
			List<IntfCab> lista = intfCabDao.consultarDatosXSecuencial(cab);		
			if(lista.size()>1){
				bean.setCodigo(Constantes.COD_OPERACION_CONSULTA_INTF_CAB_DUPLICIDAD);
				bean.setResultado(Constantes.OPERACION_CONSULTA_INTF_CAB_DUPLICIDAD); 	
			}else if(lista.size()==0){
				bean.setCodigo(Constantes.COD_OPERACION_CONSULTA_INTF_CAB_VACIO);
				bean.setResultado(Constantes.OPERACION_CONSULTA_INTF_CAB_VACIO); 	
			}else{			
				//seteando datos al bean resultado				
				bean.setEstado(validarNulo(lista.get(0).getEstado()));  
				bean.setUe_estado(validarNulo(lista.get(0).getUeEstado()));
				bean.setSiaf_exp(validarNulo(lista.get(0).getSiafExp()));
				bean.setSiaf_sec(validarNulo(lista.get(0).getSiafSec()));
				bean.setSiaf_cor(validarNulo(lista.get(0).getSiafCor())); 
				bean.setIntf_exp(validarNulo(lista.get(0).getIntfExp()));
				bean.setIntf_sec(validarNulo(lista.get(0).getIntfSec()));
				bean.setIntf_fase(validarNulo(lista.get(0).getIntfFase()));
				bean.setIntf_cor(validarNulo(lista.get(0).getIntfCor())); 
				bean.setMef_estado(validarNulo(lista.get(0).getMefEstado()));
				bean.setMef_mensa(validarNulo(lista.get(0).getMefMensa()));
				bean.setMef_error(validarNulo(lista.get(0).getMefError())); 
				bean.setEstado_reg(validarNulo(lista.get(0).getEstadoReg()));
				bean.setDato_ori(validarNulo(lista.get(0).getDatoOri())); 	
				
				bean.setCodigo(Constantes.COD_OPERACION_CORRECTO_CONSULTA);
				bean.setResultado(Constantes.OPERACION_CORRECTO_CONSULTA); 
			}					
		} catch (Exception e) {
			bean.setCodigo(Constantes.COD_OPERACION_CONSULTA_DES_ERROR);
			bean.setResultado(Constantes.OPERACION_CONSULTA_DES_ERROR); 
			logger.info("Ocurrio un error al consultar datos del Intf_cab:  "+e); 		
		}finally{		
			if(cab!=null){
			  cab =null;
			}			
		}
		return bean;
	}
	
	
	private String validarNulo(String cadena){
		if(StringUtils.isNoneBlank(cadena)){ 
		 return cadena;	
		}else{
			return "-";	
		}		
	}
	

}
